/*
 * Galaxium Messenger
 * 
 * Copyright (C) 2008 Philippe Durand <draekz@gmail.com>
 * 
 * License: GNU General Public License (GPL)
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the Free
 * Software Foundation; either version 2 of the License, or (at your option)
 * any later version.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * for more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

using System;
using System.Text;
using System.Collections.Generic;

namespace Galaxium.Protocol.GaduGadu
{
	public static class GaduConstants
	{
		public const string DefaultHostname = "";
		public const int DefaultPort = 0;
		
		// These seem to be version 7.0 of the GG protocol.
		
		public const int GG_VERSION = 0x2a;
        public const byte GG_LOGIN_HASH_GG32 = 0x01;
        public const byte GG_LOGIN_HASH_SHA1 = 0x02;
		
		public const int CMD_NONE = 0x0000;
        public const int CMD_IN_WELCOME = 0x0001;
        public const int CMD_IN_LOGIN_OK = 0x0003;
        //public const int CMD_IN_STATUS = 0x0002;
        public const int CMD_IN_NEED_EMAIL = 0x0014;
        public const int CMD_IN_LOGIN_FAILED = 0x0009;
        public const int CMD_IN_RECV_MSG = 0x000a;
       	public const int CMD_IN_SEND_MSG_ACK = 0x0005;
       	public const int CMD_IN_DISCONNECTING = 0x000b;
		public const int CMD_IN_NOTIFY_REPLY = 0x000c;
		public const int CMD_IN_PUBDIR50_REPLY = 0x000e;
		public const int CMD_IN_STATUS60 = 0x000f;
		public const int CMD_IN_USERLIST_REPLY = 0x0010;
		public const int CMD_IN_NOTIFY_REPLY60 = 0x0011;
		public const int CMD_IN_PONG = 0x0007;
		public const int CMD_IN_STATUS = 0x0017;
		public const int CMD_IN_STATUS_INITIAL = 0x0018;
		
        public const int CMD_OUT_LOGIN = 0x0019;
        public const int CMD_OUT_LOGIN_EXT = 0x0013;
        public const int CMD_OUT_NEW_STATUS = 0x0002;
        public const int CMD_OUT_PING = 0x0008;
        public const int CMD_OUT_SEND_MSG = 0x000b;
        public const int CMD_OUT_ADD_NOTIFY = 0x000d;
		public const int CMD_OUT_REMOVE_NOTIFY = 0x000e;
		public const int CMD_OUT_NOTIFY_FIRST = 0x000f;
		public const int CMD_OUT_NOTIFY_LAST = 0x0010;
		public const int CMD_OUT_LIST_EMPTY = 0x0012;
		public const int CMD_OUT_PUBDIR50_REQUEST = 0x0014;
		public const int CMD_OUT_USERLIST_REQUEST = 0x0016;
		
        public const int STATUS_NOT_AVAIL = 0x0001;
        public const int STATUS_NOT_AVAIL_DESC = 0x0015;
        public const int STATUS_AVAIL = 0x0002;
        public const int STATUS_AVAIL_DESC = 0x0004;
        public const int STATUS_BUSY = 0x0003;
        public const int STATUS_BUSY_DESC = 0x0005;
        public const int STATUS_INVISIBLE = 0x0014;
        public const int STATUS_INVISIBLE_DESC = 0x0016;
        public const int STATUS_BLOCKED = 0x0006;
        public const int STATUS_FRIENDS_MASK = 0x8000;
        
        public const int CLASS_QUEUED = 0x0001;
        public const int CLASS_MSG = 0x0004;
        public const int CLASS_CHAT = 0x0008;
        public const int CLASS_CTCP = 0x0010;
        public const int CLASS_ACK = 0x0020;
        
        public const int ACK_BLOCKED = 0x0001;
        public const int ACK_DELIVERED = 0x0002;
        public const int ACK_QUEUED = 0x0003;
        public const int ACK_MBOXFULL = 0x0004;
        public const int ACK_NOT_DELIVERED = 0x0006;
        
        public const byte USER_BUDDY = 0x01;
		public const byte USER_FRIEND = 0x02;
		public const byte USER_NORMAL = 0x03;
		public const byte USER_BLOCKED = 0x04;
		
		public const int USERLIST_PUT = 0x00;
		public const int USERLIST_PUT_MORE = 0x01;
		public const int USERLIST_GET = 0x02;
		public const int USERLIST_PUT_REPLY = 0x00;
		public const int USERLIST_PUT_MORE_REPLY = 0x02;
		public const int USERLIST_GET_MORE_REPLY = 0x04;
		public const int USERLIST_GET_REPLY = 0x06;
    }
}